package com.liufeng.myheart.util;

import android.content.Context;

import com.baidu.trace.LocationMode;
import com.baidu.trace.OnEntityListener;
import com.baidu.trace.OnStartTraceListener;
import com.baidu.trace.OnTrackListener;
import com.baidu.trace.Trace;
import com.liufeng.myheart.MyApplication;

/**
 * Created by liufeng on 2016/7/13.
 */
public class TraceUtil {
    //鹰眼服务ID
    public static final long serviceId = 120650;

    //鹰眼服务ID
    //long serviceId = <开发者创建的鹰眼服务的ID>；
//entity标识列表（多个entityName，以英文逗号"," 分割）
    //String entityNames = "mycar1,mycar2,mycar3";
//检索条件（格式为 : "key1=value1,key2=value2,....."）
    //String columnKey = "car_team=1";
//返回结果的类型（0 : 返回全部结果，1 : 只返回entityName的列表）
    private static int returnType = 0;
    //活跃时间，UNIX时间戳（指定该字段时，返回从该时间点之后仍有位置变动的entity的实时点集合）
    private static int activeTime = (int) (System.currentTimeMillis() / 1000 - 12 * 60 * 60);
    //分页大小
    private static int pageSize = 10;
    //分页索引
    private static int pageIndex = 1;

    //轨迹服务类型（0 : 不上传位置数据，也不接收报警信息； 1 : 不上传位置数据，但接收报警信息；2 : 上传位置数据，且接收报警信息）
    private static int traceType = 2;

    //位置采集周期(s)
    private static int gatherInterval = 10;
    //打包周期(s)
    private static int packInterval = 60;

    // 设置协议类型，0为http，1为https
    private static int protocoType = 0;

    //是否返回精简的结果（0 : 否，1 : 仅返回轨迹点的经纬度，2 : 仅返回轨迹的里程数）
    private static int simpleReturn=0;
//是否返回纠偏后轨迹（0 : 否，1 : 是）
    private static int isProcessed=1;

    public static void queryRealTimePoint(String entity, OnEntityListener entityListener){
        MyApplication.client.queryEntityList(serviceId, entity, "", returnType, activeTime, pageSize,
                pageIndex, entityListener);
    }

    public static void addEntity(String entity,OnEntityListener entityListener){
        MyApplication.client.addEntity(serviceId,entity,"",entityListener);
    }

    public static void startTrace(Context appContext, String entity, OnStartTraceListener startTraceListener){
        // 设置定位模式
        MyApplication.client.setLocationMode(LocationMode.High_Accuracy);
        //设置位置采集和打包周期
        MyApplication.client.setInterval(gatherInterval, packInterval);

        MyApplication.client.setProtocolType(protocoType);
        //实例化轨迹服务
        Trace trace = new Trace(appContext, serviceId, entity, traceType);
        //开启轨迹服务
        MyApplication.client.startTrace(trace, startTraceListener);
    }

    public static void queryHistoryTrack(String entity, long startTime, long endTime, OnTrackListener trackListener){
        int pages=5000;
        int index=1;
        int start= (int) (startTime/1000);
        int end= (int) (endTime/1000);

        //查询历史轨迹
        MyApplication.client.queryProcessedHistoryTrack(serviceId,entity,simpleReturn,isProcessed,start,end,pages,index,trackListener);
    }

    public static void queryMyLocation(OnEntityListener entityListener){
        MyApplication.client.queryRealtimeLoc(serviceId,entityListener);
    }

}
